% fname: routing_dyad_0_6__sel_bufferlevel__topology_8x8__.m
% ./noxim -routing dyad 0.6 -sel bufferlevel -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 4 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_dyad_0_6__sel_bufferlevel__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        26.3091      0.0615703            229           3940          31524
            0.008        28.2241      0.0652109            215           4173          33388
            0.008        27.2058      0.0647832            258           4145          33169
            0.008        25.5592      0.0655195            232           4192          33546
            0.008        30.3696      0.0657871            293           4210          33683
            0.008        28.1567      0.0650566            210           4162          33309
            0.008        27.2926      0.0637812            201           4081          32656
            0.008        24.6785          0.063            188           4034          32256
            0.008        26.7044      0.0627227            244           4015          32114
            0.008        26.5764      0.0631758            280           4044          32346
            0.008        26.7776      0.0656074            258           4199          33591
            0.008        27.9826      0.0629141            254           4028          32212
            0.008        26.0664      0.0649727            170           4158          33266
            0.008        26.7514      0.0616719            279           3946          31576
            0.008        26.7163      0.0642344            228           4113          32888
            0.008        26.3595       0.065168            234           4172          33366
            0.008        26.8007      0.0632637            209           4045          32391
            0.008        26.5935      0.0646387            238           4140          33095
            0.008        26.2935      0.0645449            176           4130          33047
            0.008        27.7932      0.0629336            301           4029          32222
           0.0088        29.0406      0.0704863            239           4512          36089
           0.0088        28.4861      0.0691172            194           4425          35388
           0.0088        31.5258       0.070248            244           4496          35967
           0.0088        28.6402      0.0695215            217           4452          35595
           0.0088        29.0616      0.0704785            268           4511          36085
           0.0088        30.4683      0.0714707            296           4572          36593
           0.0088        30.6294      0.0716348            468           4584          36677
           0.0088        30.8238       0.070207            285           4494          35946
           0.0088        31.6264      0.0716777            261           4588          36699
           0.0088        30.6975          0.069            253           4416          35328
           0.0088          30.23      0.0717324            271           4592          36727
           0.0088        27.8542      0.0686855            257           4397          35167
           0.0088        27.9751      0.0695586            185           4454          35614
           0.0088        28.3477      0.0708516            203           4532          36276
           0.0088        30.4662      0.0718594            221           4597          36792
           0.0088        30.6234      0.0703535            227           4504          36021
           0.0088        32.4699      0.0726074            327           4646          37175
           0.0088         28.638      0.0708223            230           4533          36261
           0.0088        28.9219      0.0712578            241           4559          36484
           0.0088        30.0356       0.070625            424           4519          36160
           0.0096        34.1989      0.0771133            310           4936          39482
           0.0096        32.7709      0.0775254            271           4962          39693
           0.0096        34.9408       0.076877            356           4918          39361
           0.0096        32.4403      0.0776016            268           4967          39732
           0.0096        34.3583      0.0753984            318           4826          38604
           0.0096        33.5306      0.0763047            256           4883          39068
           0.0096        33.1439      0.0766074            280           4905          39223
           0.0096        33.3265      0.0781641            265           5005          40020
           0.0096        33.0137      0.0750664            346           4807          38434
           0.0096        32.1096      0.0779824            233           4992          39927
           0.0096        30.5684      0.0755566            236           4835          38685
           0.0096        34.4097      0.0790566            312           5057          40477
           0.0096        31.0273      0.0762168            368           4877          39023
           0.0096        33.7342       0.077125            488           4936          39488
           0.0096        33.6261      0.0777578            237           4977          39812
           0.0096        31.9805       0.077627            257           4966          39745
           0.0096         33.607      0.0780449            348           4998          39959
           0.0096        33.8833      0.0771777            379           4943          39515
           0.0096        35.7546      0.0780547            406           4995          39964
           0.0096        31.7248      0.0760156            253           4865          38920
           0.0104        37.3936      0.0836504            347           5350          42829
           0.0104        37.6024      0.0835898            460           5352          42798
           0.0104        40.0313      0.0842578            337           5395          43140
           0.0104        38.1879      0.0834023            335           5337          42702
           0.0104        36.9842      0.0842617            385           5391          43142
           0.0104        36.8037      0.0821211            364           5256          42046
           0.0104        38.1027      0.0837891            336           5363          42900
           0.0104        41.0771      0.0833164            606           5332          42658
           0.0104        37.1066      0.0844121            533           5401          43219
           0.0104        38.3693      0.0823496            607           5269          42163
           0.0104        36.1288      0.0837754            385           5359          42893
           0.0104        37.6222      0.0830957            353           5315          42545
           0.0104        36.0364      0.0816348            391           5222          41797
           0.0104        39.4019      0.0839531            374           5374          42984
           0.0104        36.8013      0.0826074            416           5285          42295
           0.0104        38.0975      0.0825742            413           5284          42278
           0.0104         33.844      0.0831406            229           5326          42568
           0.0104        37.3316      0.0844277            365           5404          43227
           0.0104        37.6885      0.0829609            481           5313          42476
           0.0104        32.7889      0.0813867            240           5210          41670
           0.0112         41.107      0.0901875            487           5769          46176
           0.0112        39.9947      0.0886328            503           5672          45380
           0.0112        40.7309      0.0887129            413           5678          45421
           0.0112        43.7931      0.0884375            570           5661          45280
           0.0112        42.3474       0.090627            322           5798          46401
           0.0112        40.9894      0.0914434            356           5853          46819
           0.0112        43.9532      0.0900898            383           5767          46126
           0.0112         42.079      0.0897129            422           5744          45933
           0.0112        40.2995      0.0878379            381           5623          44973
           0.0112        46.1908      0.0897012            573           5743          45927
           0.0112        41.5912      0.0907305            383           5805          46454
           0.0112        41.1802      0.0899688            439           5755          46064
           0.0112        44.1284      0.0891309            467           5703          45635
           0.0112        42.2301      0.0888633            461           5688          45498
           0.0112        44.6911      0.0877207            684           5610          44913
           0.0112        39.4499       0.088959            540           5692          45547
           0.0112        40.3609      0.0898203            367           5749          45988
           0.0112        44.1338      0.0905762            625           5798          46375
           0.0112        38.5167       0.088666            309           5676          45397
           0.0112        48.5034      0.0916211            618           5866          46910
            0.012        58.4519      0.0956113            835           6119          48953
            0.012        49.5803      0.0958672            587           6136          49084
            0.012        61.2199      0.0972363            958           6221          49785
            0.012         46.541       0.097666            322           6248          50005
            0.012        54.6447      0.0989219            537           6329          50648
            0.012        50.9669      0.0950312            735           6081          48656
            0.012        58.1589      0.0960469           1078           6148          49176
            0.012        44.5942      0.0945703            396           6052          48420
            0.012        53.7293      0.0941992            660           6032          48230
            0.012        51.4619      0.0946504            559           6062          48461
            0.012          54.21      0.0956816            673           6124          48989
            0.012        53.8834      0.0968047            823           6192          49564
            0.012        52.0461      0.0970078            676           6210          49668
            0.012        56.4981      0.0952539            578           6101          48770
            0.012        53.7506      0.0966738            652           6186          49497
            0.012        44.3244      0.0936387            575           5993          47943
            0.012        44.2923      0.0940566            391           6017          48157
            0.012        56.8091      0.0976094            726           6245          49976
            0.012        51.4091      0.0964688            651           6177          49392
            0.012        49.7151      0.0956719            555           6122          48984
           0.0128        87.1457       0.102912           1290           6590          52691
           0.0128        60.3878       0.101004            644           6468          51714
           0.0128        57.2782       0.102902            902           6585          52686
           0.0128        64.1222      0.0996445            704           6377          51018
           0.0128        70.5914       0.102953            744           6588          52712
           0.0128        70.9121       0.103271            814           6612          52875
           0.0128        81.4372       0.104094           1842           6661          53296
           0.0128        70.2311       0.101658           1202           6503          52049
           0.0128        75.5233       0.103477            776           6623          52980
           0.0128        64.7761       0.102439            700           6556          52449
           0.0128        90.9714       0.101689           1780           6508          52065
           0.0128         73.303       0.101234           1169           6479          51832
           0.0128         83.086        0.10402           1100           6661          53258
           0.0128        70.8249       0.101201           1231           6481          51815
           0.0128        70.9584       0.102025           1011           6531          52237
           0.0128        73.4573       0.102816            685           6582          52642
           0.0128        76.3914       0.104102           1172           6663          53300
           0.0128        75.9666       0.102949            716           6593          52710
           0.0128        68.5215       0.101391            773           6489          51912
           0.0128        75.7707      0.0998437           1615           6389          51120
           0.0136        145.973       0.105637           2295           6761          54086
           0.0136        173.604       0.108139           3902           6921          55367
           0.0136        191.347       0.107867           4014           6906          55228
           0.0136        152.248       0.108061           2178           6914          55327
           0.0136        90.9617       0.106322           1078           6809          54437
           0.0136        111.703       0.110115           1349           7047          56379
           0.0136        104.316       0.108268           1485           6929          55433
           0.0136        197.864        0.10758           2702           6883          55081
           0.0136        129.316       0.107367           1810           6868          54972
           0.0136        88.0641       0.106469           1122           6815          54512
           0.0136        120.549        0.10716           1578           6859          54866
           0.0136        155.767       0.107459           2909           6878          55019
           0.0136        106.143       0.108363           1955           6939          55482
           0.0136        99.4253       0.108902           1415           6970          55758
           0.0136        141.056       0.108563           1801           6945          55584
           0.0136        123.971       0.107428           2197           6874          55003
           0.0136        164.929       0.107023           3384           6851          54796
           0.0136         152.82       0.109195           2837           6986          55908
           0.0136         137.95       0.107172           1713           6860          54872
           0.0136        126.401       0.107887           2345           6906          55238
           0.0144        228.875       0.113166           3517           7242          57941
           0.0144        195.518       0.112467           3512           7199          57583
           0.0144        275.718        0.11218           4900           7179          57436
           0.0144        198.235       0.113328           3719           7256          58024
           0.0144        235.968       0.113139           3620           7241          57927
           0.0144        199.725       0.111107           4759           7111          56887
           0.0144        237.193        0.11268           3678           7209          57692
           0.0144        252.163       0.111756           4280           7151          57219
           0.0144        216.702       0.113537           4913           7265          58131
           0.0144        217.818       0.112377           3296           7197          57537
           0.0144        212.385       0.111971           3501           7166          57329
           0.0144        230.946        0.11067           3434           7084          56663
           0.0144        237.314       0.111668           4281           7144          57174
           0.0144        241.137       0.111312           4137           7124          56992
           0.0144        210.217         0.1131           2722           7237          57907
           0.0144        223.677       0.111855           3711           7161          57270
           0.0144        280.204       0.111486           4833           7136          57081
           0.0144        234.089       0.112105           3288           7175          57398
           0.0144        233.112       0.111223           4346           7118          56946
           0.0144        204.948       0.112789           3765           7219          57748
           0.0152        380.314       0.114562           5166           7334          58656
           0.0152        270.608       0.116191           4491           7433          59490
           0.0152        274.013       0.116947           3979           7485          59877
           0.0152        278.378       0.114375           5585           7322          58560
           0.0152        339.772       0.115543           6175           7396          59158
           0.0152        351.656       0.115461           5918           7388          59116
           0.0152        222.481       0.114576           3572           7338          58663
           0.0152        305.272       0.116469           5107           7457          59632
           0.0152        273.861       0.115633           4038           7402          59204
           0.0152        284.707       0.114223           4721           7309          58482
           0.0152        323.631       0.115143           5315           7368          58953
           0.0152        298.641       0.114486           4134           7326          58617
           0.0152         335.95       0.114834           5350           7348          58795
           0.0152        309.426       0.114865           4548           7356          58811
           0.0152        268.581       0.116477           5185           7459          59636
           0.0152        329.809        0.11515           4898           7369          58957
           0.0152          326.9       0.115721           5582           7407          59249
           0.0152        293.075       0.115506           4534           7395          59139
           0.0152        335.155       0.118561           4559           7589          60703
           0.0152        242.503       0.116379           5217           7452          59586
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
